gtk-demo: Adapt hightlighting style for dark themes
authorMatthias Clasen <mclasen@redhat.com>
Sun, 9 Aug 2020 03:50:45 +0000 (23:50 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 9 Aug 2020 03:50:45 +0000 (23:50 -0400)
Switch to a highlight style that is readable with
dark background, if prefer-dark is set or we are
in HighContrastInverse.

demos/gtk-demo/main.c

index 2c8686044d6b3e42d248829798964765bba4ffcd..2b1c36f611aa7310cdf4314d7463619597c414d2 100644 (file)
@@ -244,6 +244,23 @@ fontify_text (const char *format,
   GBytes *stderr_buf = NULL;
   GError *error = NULL;
   char *format_arg;
+  GtkSettings *settings;
+  char *theme;
+  gboolean prefer_dark;
+  const char *style_arg;
+
+  settings = gtk_settings_get_default ();
+  g_object_get (settings,
+                "gtk-theme-name", &theme,
+                "gtk-application-prefer-dark-theme", &prefer_dark,
+                NULL);
+
+  if (prefer_dark || strcmp (theme, "HighContrastInverse") == 0)
+    style_arg = "--style=edit-vim-dark";
+  else
+    style_arg = "--style=edit-kwrite";
+
+  g_free (theme);
 
   format_arg = g_strconcat ("--syntax=", format, NULL);
   subprocess = g_subprocess_new (G_SUBPROCESS_FLAGS_STDIN_PIPE |
@@ -253,6 +270,7 @@ fontify_text (const char *format,
                                  "highlight",
                                  format_arg,
                                  "--out-format=pango",
+                                 style_arg,
                                  NULL);
   g_free (format_arg);